
#ifndef __CORE_HH
#define __CORE_HH

/**
    \mainpage C工程模板

    模块可用于演示 cmake, address sanitizer, doxygen, unitary test, clang-format, vscode debug 等内容。

    \section template_build_options 编译及运行

    \subsection template_build_build 编译
    在源码的根目录下， 创建 build 子目录

    \code
    make build && cd build
    \endcode

    缺省配置

    \code
    cmake ..
    \endcode

    配置使用 address sanitizer
    \code
    cmake -DBUILD_WITH_AS=ON =OFF ..
    \endcode

    编译，
    \code
    make
    \endcode

    有三个目标程序将被编译，
    - c-template 主程序
    - ut-core core 的单元测试程序
    - ut-comp1 comp1 的单元测试程序

    \subsection template_build_run 运行

    \code
    ./c-template
    \endcode

    core 的单元测试将 **失败**
    \code
    ./ut-core
    \endcode

    comp1 的单元测试将成功
    \code
    ./ut-comp1
    \endcode

    \subsection template_build_docs 编译文档
    在步骤 \ref template_build_build 中， 文档会被同时生成， 入口文件为 "build/doc/html/index.html"

    目前，文档的生成与源码没有关联。 如果源码有改动， 应使用如下命令重新生成文档。

    \code
    make clean && make docs
    \endcode

    \section template_functions 功能
    模板中提供了两个模块
    - \ref group_core
    - \ref group_comp1

 */

/**
 * \addtogroup group_core Core
 * @{
 *
 * \brief Core 模块说明
 *
 *
 * \section core_basic 功能介绍
 *
 */
#if defined( UNITTEST )
#define LOGGER_INFO( ... )
#define LOGGER_DEBUG( ... )
#define LOGGER_ERROR( ... )
#define LOGGER_FATAL( ... )
#define LOGGER_HEX_DUMP( ... )
#else
#include <ulog/ulog.h>
#endif

/** \brief 加法实现
 *
 * @param[in] param1 第一个参数
 * @param[in] param2 第二个参数
 * @param[in] param3 第三个参数
 *
 * @return 运算结果
 */
int core_add( int param1, int param2, int param3 );


/** \brief 加法实现， 将结果存在 param_res 中。
 *
 * @param[in] param_res 存放结果的指针
 * @param[in] param1 参数1
 * @param[in] param2 参数2
 *
 * @return 0 表示成功， 其它表示失败
 */
int core_add_p( long* param_res, int param1, int param2 );


/** @}*/

#endif // __CORE_HH
